Skip to content

✨ server: handle bridge webhook events#861

Merged
cruzdanilo merged 2 commits intomainfrom
bridge-hook
Mar 11, 2026
Merged

✨ server: handle bridge webhook events#861
cruzdanilo merged 2 commits intomainfrom
bridge-hook

Conversation

@mainqueg
Copy link
Contributor

@mainqueg mainqueg commented Mar 4, 2026

closes #436

Summary by CodeRabbit

  • New Features

    • Added Bridge webhook integration to handle payment events, customer status changes, and deposits with push notifications and analytics for fiat onramp activity; new HTTP route enabled.
  • Tests

    • Added comprehensive tests for webhook validation, signature handling, event-driven tracking, and notifications; updated expectations for onramp property rename.
  • Chores

    • Renamed analytics property fiatAmount → amount for Onramp events.
    • Exposed bridge currency constant and added webhook public key env configuration.

Open with Devin

@changeset-bot
Copy link

changeset-bot bot commented Mar 4, 2026

🦋 Changeset detected

Latest commit: 7672e26

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@exactly/server Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@gemini-code-assist
Copy link

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces a new webhook handler for the 'Bridge' service, enabling the server to process various events such as customer status updates, fund receipts, and liquidation address drains. It includes robust signature validation for security, integrates with notification and analytics platforms, and standardizes the Onramp event tracking property. This enhancement allows for real-time processing of Bridge-related activities and improves data consistency across different financial ramp integrations.

Highlights

  • New Bridge Webhook Handler: A new Hono route and logic were introduced to process webhook events from the 'Bridge' service, including customer status updates, fund receipts, and liquidation address drains.
  • Webhook Signature Validation: A robust headerValidator function was implemented to verify the authenticity and integrity of incoming Bridge webhooks using RSA-SHA256 signatures and timestamp checks.
  • Integration with Existing Services: The new webhook handler integrates with Sentry for error capture, OneSignal for push notifications, and Segment for analytics tracking based on Bridge events.
  • Standardized Onramp Event Property: The Onramp event in Segment tracking was updated to use a generic amount property instead of fiatAmount for better consistency across different ramp providers.
  • Comprehensive Test Suite: A new test suite (server/test/hooks/bridge.test.ts) was added to ensure the correct functioning of the Bridge webhook handler under various scenarios, including valid/invalid signatures and different payload types.
Changelog
  • .changeset/thin-pumas-brush.md
    • Added a new changeset file.
  • server/hooks/bridge.ts
    • Added a new file to handle Bridge webhook events.
  • server/hooks/manteca.ts
    • Updated the Onramp event property from fiatAmount to amount.
  • server/index.ts
    • Integrated the new Bridge webhook handler into the main Hono application.
  • server/test/hooks/bridge.test.ts
    • Added a new test file for the Bridge webhook handler.
  • server/test/hooks/manteca.test.ts
    • Updated the Onramp event property from fiatAmount to amount in tests.
  • server/utils/ramps/bridge.ts
    • Exported BridgeCurrency for use in other modules.
  • server/utils/segment.ts
    • Modified the Onramp event type to use amount instead of fiatAmount.
  • server/vitest.config.mts
    • Added BRIDGE_WEBHOOK_PUBLIC_KEY to the test environment variables.
Activity
  • No specific activity (comments, reviews) has been recorded yet for this pull request.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@coderabbitai
Copy link

coderabbitai bot commented Mar 4, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds a new Bridge webhook POST endpoint with signed-payload validation, credential lookup, user context resolution, push notifications, and analytics tracking; updates Onramp event property fiatAmountamount; exports BridgeCurrency; adds tests, a changeset, and test env key.

Changes

Cohort / File(s) Summary
Bridge Webhook
server/hooks/bridge.ts, server/test/hooks/bridge.test.ts, server/index.ts, server/vitest.config.mts
New Hono POST route at /hooks/bridge implementing RSA‑SHA256 header signature validation, Valibot payload validation, DB credential lookup, user context establishment, OneSignal push notifications, Segment tracking, Sentry error capture; comprehensive tests added and BRIDGE public key injected into test env; route registered in server index.
Onramp Tracking Shape
server/utils/segment.ts, server/hooks/manteca.ts, server/test/hooks/manteca.test.ts
Renamed Onramp tracking property from fiatAmount to amount in tracking payloads and tests; manteca hook updated to use amount (computed value unchanged).
Ramp Bridge Utilities
server/utils/ramps/bridge.ts
Exported BridgeCurrency constant (visibility change only).
Release Metadata
.changeset/thin-pumas-brush.md
New changeset declaring a patch release for @exactly/server with description about handling bridge webhook events.
Deployment Config
.do/app.yaml
Added BRIDGE_WEBHOOK_PUBLIC_KEY environment variable for the server service.

Sequence Diagram(s)

sequenceDiagram
    participant Client as Bridge (Webhook Sender)
    participant Server as Bridge Hook Handler
    participant DB as Database
    participant Sentry as Sentry
    participant OneSignal as Push Notification Service
    participant Segment as Analytics Service

    Client->>Server: POST webhook payload + signature header
    Server->>Server: Validate signature (RSA‑SHA256)
    alt Signature invalid
        Server-->>Client: 401 { code: "unauthorized" }
    else Signature valid
        Server->>Server: Validate payload schema
        alt Payload invalid
            Server-->>Client: 200 { code: "bad bridge" }
        else Payload valid
            Server->>DB: Lookup credential by bridgeId
            alt Credential not found
                Server->>Sentry: Capture context
                Server-->>Client: 200 { code: "credential not found" }
            else Credential found
                Server->>Server: Establish user context
                alt Event = payment_submitted or drain.payment_submitted
                    Server->>OneSignal: Send deposit notification
                    Server->>Segment: Track Onramp event (amount, currency, source, usdcAmount)
                    Server-->>Client: 200 { code: "ok" }
                else Event = customer.updated.status_transitioned
                    alt status = "active"
                        Server->>Segment: Track RampAccount event
                        Server->>OneSignal: Send fiat onramp activation notification
                        Server-->>Client: 200 { code: "ok" }
                    else
                        Server-->>Client: 200 { code: "ok" }
                    end
                else
                    Server-->>Client: 200 { code: "ok" }
                end
                Note over OneSignal,Segment: Errors captured in Sentry but do not block response
            end
        end
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

  • exactly/exa#756: Overlaps on Onramp event schema changes and manteca tracking updates (fiatAmount → amount).
  • exactly/exa#814: Related bridge onramp functionality and changes to ramp/bridge utilities.

Suggested reviewers

  • nfmelendez
  • cruzdanilo
  • dieguezguille
  • franm91
🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically describes the main change: implementing bridge webhook event handling in the server.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch bridge-hook

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

gemini-code-assist[bot]

This comment was marked as resolved.

coderabbitai[bot]

This comment was marked as resolved.

Base automatically changed from bridge to main March 4, 2026 14:40
@mainqueg mainqueg force-pushed the bridge-hook branch 2 times, most recently from 468bb15 to d67d97d Compare March 4, 2026 14:57
@sentry
Copy link

sentry bot commented Mar 4, 2026

❌ 455 Tests Failed:

Tests completed Failed Passed Skipped
603 455 148 0
View the top 3 failed test(s) by shortest run time
test/hooks/block.test.ts > proposal > with none proposal > increments nonce
Stack Traces | 0s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > skips empty err field
Stack Traces | 0.000121s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > prefers message over err
Stack Traces | 0.000121s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > falls back to err field when no message or errors[0].title
Stack Traces | 0.000127s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > skips empty errors array
Stack Traces | 0.000128s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > prefers error field over code field
Stack Traces | 0.000128s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > skips non-string message (array)
Stack Traces | 0.000133s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > html auto-parsing > falls back to status for html without title
Stack Traces | 0.000133s run time
No failure message available
test/utils/persona.test.ts > getAllowedMantecaIds > retrieving allowed ids > returns undefined for country not listed
Stack Traces | 0.000133s run time
No failure message available
test/utils/persona.test.ts > getAllowedMantecaIds > retrieving allowed ids > returns undefined for invalid country code
Stack Traces | 0.000133s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > explicit type and detail > falls back to status for empty string detail
Stack Traces | 0.000134s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > html auto-parsing > extracts title case-insensitively
Stack Traces | 0.000135s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > ignores json arrays
Stack Traces | 0.000135s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > skips empty string error field
Stack Traces | 0.000135s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > plain text auto-parsing > falls back to status for text containing <
Stack Traces | 0.000137s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > ignores json primitives
Stack Traces | 0.000137s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > skips errors with non-string title
Stack Traces | 0.000138s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > extracts type without detail
Stack Traces | 0.000142s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > ignores code not ending in Error
Stack Traces | 0.000143s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > fallback without auto-parsing > skips auto-parsing when cause is empty string
Stack Traces | 0.000151s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > plain text auto-parsing > uses short plain text as detail
Stack Traces | 0.000155s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > skips empty string message
Stack Traces | 0.000156s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > plain text auto-parsing > falls back to status for text longer than 200 chars
Stack Traces | 0.000156s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > explicit type and detail > falls back to status when type is exactly Error
Stack Traces | 0.000156s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > fallback without auto-parsing > skips auto-parsing when type is provided
Stack Traces | 0.000162s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > skips errors with empty title
Stack Traces | 0.000162s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > plain text auto-parsing > uses text at exactly 200 chars
Stack Traces | 0.000164s run time
No failure message available
test/utils/verifySignature.test.ts > verify signature > should return false when the signature is missing
Stack Traces | 0.000165s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > explicit type and detail > preserves type without Error suffix
Stack Traces | 0.000166s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > extracts code ending in Error as type
Stack Traces | 0.000173s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > html auto-parsing > extracts title from cloudflare html
Stack Traces | 0.000175s run time
No failure message available
test/utils/persona.test.ts > getAllowedMantecaIds > development mode > returns undefined for unsupported countries
Stack Traces | 0.000175s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > skips code field when it is exactly Error
Stack Traces | 0.000182s run time
No failure message available
test/utils/persona.test.ts > getAllowedMantecaIds > retrieving allowed ids > returns undefined for US in production mode (no fallback)
Stack Traces | 0.00019s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > extracts string message as detail
Stack Traces | 0.000195s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > fallback without auto-parsing > skips auto-parsing when detail is provided
Stack Traces | 0.000197s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > extracts errors[0].title as detail (persona format)
Stack Traces | 0.000212s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > skips error field when it is exactly Error
Stack Traces | 0.000222s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > html auto-parsing > extracts title from nginx html
Stack Traces | 0.000224s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > fallback without auto-parsing > skips auto-parsing when cause is not a string
Stack Traces | 0.000233s run time
No failure message available
test/utils/revertFingerprint.test.ts > revertFingerprint > returns unknown for empty revert
Stack Traces | 0.000242s run time
No failure message available
test/utils/persona.test.ts > get document for manteca > returns undefined when id class is not allowed
Stack Traces | 0.000246s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > manteca > returns panda template when account not found
Stack Traces | 0.000246s run time
No failure message available
test/utils/persona.test.ts > get document for manteca > brazil priority order: dl > pp > id > returns pp even when actual document has null back photo (side: front)
Stack Traces | 0.00025s run time
No failure message available
test/utils/revertFingerprint.test.ts > revertFingerprint > treats WrappedError without args as regular named error
Stack Traces | 0.000258s run time
No failure message available
test/utils/revertFingerprint.test.ts > revertFingerprint > falls back to signature
Stack Traces | 0.000259s run time
No failure message available
test/utils/revertFingerprint.test.ts > revertFingerprint > falls back to reason
Stack Traces | 0.000269s run time
No failure message available
test/utils/revertFingerprint.test.ts > revertFingerprint > handles WrappedError with selector
Stack Traces | 0.000272s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > json auto-parsing > extracts error field as type
Stack Traces | 0.000274s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getProvider > handles empty onboarding object without throwing
Stack Traces | 0.000279s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > explicit type and detail > strips Error suffix from type
Stack Traces | 0.00028s run time
No failure message available
test/utils/verifySignature.test.ts > verify signature > should return false when the signature is invalid
Stack Traces | 0.000281s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > fallback without auto-parsing > uses status as message and service+status as name when no type or detail
Stack Traces | 0.000286s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getProvider > returns NOT_AVAILABLE when user status is INACTIVE
Stack Traces | 0.000286s run time
No failure message available
test/utils/persona.test.ts > get document for manteca > brazil priority order: dl > pp > id > skips dl check and returns pp when only pp is present
Stack Traces | 0.000289s run time
No failure message available
test/utils/persona.test.ts > get document for manteca > returns pp document without fetching (no photo check required)
Stack Traces | 0.000289s run time
No failure message available
test/utils/persona.test.ts > get document for manteca > brazil priority order: dl > pp > id > returns pp without photo check (side: front)
Stack Traces | 0.0003s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getProvider > returns no limits when no EXCHANGE type limit found
Stack Traces | 0.000305s run time
No failure message available
test/utils/persona.test.ts > get document for manteca > returns undefined when no document is found
Stack Traces | 0.000305s run time
No failure message available
test/utils/persona.test.ts > getAllowedMantecaIds > retrieving allowed ids > returns allowed ids for supported countries (AR)
Stack Traces | 0.000319s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getProvider > returns no limits when limits response is empty
Stack Traces | 0.000323s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > manteca > returns undefined when account exists and id class is allowed
Stack Traces | 0.000323s run time
No failure message available
test/utils/persona.test.ts > get document for manteca > returns latest pp document when multiple pp documents exist (front-only, no fetch)
Stack Traces | 0.000341s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getProvider > returns ONBOARDING when user has no pending required tasks
Stack Traces | 0.000341s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > withdrawBalance > throws when asset balance not found
Stack Traces | 0.000363s run time
No failure message available
test/utils/persona.test.ts > is missing or null util > returns false if union is defined and at least one sub issue is not undefined or null
Stack Traces | 0.000364s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > basic > returns undefined when account exists and is valid
Stack Traces | 0.000364s run time
No failure message available
test/utils/persona.test.ts > is missing or null util > returns true if nested field is null or undefined
Stack Traces | 0.000376s run time
No failure message available
test/utils/persona.test.ts > is missing or null util > returns false if field is not valid
Stack Traces | 0.000377s run time
No failure message available
test/utils/persona.test.ts > get document for manteca > returns undefined when id document is missing photos and no fallback
Stack Traces | 0.000385s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > mantecaOnboarding > throws when user is inactive
Stack Traces | 0.000385s run time
No failure message available
test/utils/persona.test.ts > get document for manteca > returns id document when it has both photos (priority over pp)
Stack Traces | 0.000386s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getUser > falls back to generic classification without internalStatus
Stack Traces | 0.000387s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > basic > returns panda template when account not found
Stack Traces | 0.000388s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > mantecaOnboarding > returns early when user is already active
Stack Traces | 0.0004s run time
No failure message available
test/utils/persona.test.ts > getAllowedMantecaIds > development mode > returns allowed ids for supported countries (BR)
Stack Traces | 0.000401s run time
No failure message available
test/utils/persona.test.ts > get document for manteca > brazil priority order: dl > pp > id > falls back to pp when dl is missing back photo
Stack Traces | 0.000406s run time
No failure message available
test/utils/persona.test.ts > get document for manteca > falls back to pp when id document is missing photos
Stack Traces | 0.000416s run time
No failure message available
test/api/activity.test.ts > authenticated > card > accepts panda activity with zero exchange rate
Stack Traces | 0.000439s run time
No failure message available
test/utils/persona.test.ts > getAllowedMantecaIds > retrieving allowed ids > returns allowed ids for supported countries (BR)
Stack Traces | 0.000446s run time
No failure message available
test/utils/persona.test.ts > getAllowedMantecaIds > development mode > returns dl fallback for US in development mode
Stack Traces | 0.000448s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getDepositDetails > returns BRL deposit details for brazil
Stack Traces | 0.000457s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getDepositDetails > returns USD deposit details for argentina
Stack Traces | 0.000459s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getUser > keeps errors entry without has wrong value pattern
Stack Traces | 0.000476s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > manteca > returns panda template when account exists but basic scope is not valid
Stack Traces | 0.000482s run time
No failure message available
test/utils/revertFingerprint.test.ts > revertFingerprint > returns unknown for non-error values
Stack Traces | 0.000485s run time
No failure message available
test/utils/pax.test.ts > pax integration > removeCapita > should call the DELETE endpoint correctly
Stack Traces | 0.000491s run time
No failure message available
test/utils/persona.test.ts > get document for manteca > brazil priority order: dl > pp > id > returns undefined when dl and id both missing photos and no pp
Stack Traces | 0.000495s run time
No failure message available
test/utils/persona.test.ts > is missing or null util > returns true if array is empty and min length is 1
Stack Traces | 0.000497s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > manteca > returns manteca template extra fields when user has only pp document (no getDocument call)
Stack Traces | 0.000508s run time
No failure message available
test/utils/persona.test.ts > get document for manteca > returns id document when it has both photos
Stack Traces | 0.000519s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getProvider > returns currencies on development chain
Stack Traces | 0.000524s run time
No failure message available
test/utils/persona.test.ts > get document for manteca > returns undefined when country is not supported (allowedIds is undefined)
Stack Traces | 0.000526s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > manteca > throws when schema validation fails
Stack Traces | 0.000535s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > manteca > returns manteca template extra fields when user has id and pp, id missing photos (fallback to pp)
Stack Traces | 0.000544s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getUser > falls back to message when errors array is absent
Stack Traces | 0.000549s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > convertBalanceToUsdc > throws when asset balance not found
Stack Traces | 0.000554s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > manteca > returns manteca template extra fields when user has id and pp, id has both photos
Stack Traces | 0.000576s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getUser > extracts field path from errors array stripping pii
Stack Traces | 0.000579s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > convertBalanceToUsdc > throws INVALID_ORDER_SIZE on MIN_SIZE error
Stack Traces | 0.00058s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > manteca > returns manteca template extra fields when id document has both photos
Stack Traces | 0.000586s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > manteca > returns manteca template when new account has a id class that is not allowed
Stack Traces | 0.000596s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getQuote > returns transformed quote response
Stack Traces | 0.000599s run time
No failure message available
test/utils/pax.test.ts > pax integration > removeCapita > should throw on error
Stack Traces | 0.000599s run time
No failure message available
test/utils/pax.test.ts > pax integration > add capita > should handle optional fields
Stack Traces | 0.000609s run time
No failure message available
test/utils/revertFingerprint.test.ts > revertFingerprint > returns unknown for BaseError without ContractFunctionRevertedError cause
Stack Traces | 0.000617s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > mantecaOnboarding > throws when no persona account found
Stack Traces | 0.000622s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getProvider > returns ACTIVE status and limits when user is ACTIVE
Stack Traces | 0.000626s run time
No failure message available
test/utils/persona.test.ts > get document for manteca > brazil priority order: dl > pp > id > falls back to id when dl missing photos and no pp present
Stack Traces | 0.000628s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > withdrawBalance > withdraws with BASE network on development chain
Stack Traces | 0.000632s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > manteca > throws when account exists but country is not allowed
Stack Traces | 0.000658s run time
No failure message available
test/utils/persona.test.ts > get document for manteca > returns latest document when multiple documents of same class exist and latest has both photos
Stack Traces | 0.000677s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > manteca > returns manteca template when account exists and id class is allowed
Stack Traces | 0.000678s run time
No failure message available
test/utils/persona.test.ts > is missing or null util > returns true if union is null or undefined
Stack Traces | 0.000685s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > withdrawBalance > withdraws balance
Stack Traces | 0.000691s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getUser > returns null when user not found
Stack Traces | 0.000699s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > manteca > throws invalid account when country code is empty string
Stack Traces | 0.000699s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > basic > returns panda template when all fields are missing
Stack Traces | 0.000731s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > manteca > returns manteca template with id class when user has manteca fields but invalid id document
Stack Traces | 0.000765s run time
No failure message available
test/hooks/panda.test.ts > dispute > returns ok
Stack Traces | 0.000828s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getProvider > returns NOT_STARTED when user does not exist
Stack Traces | 0.000829s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > manteca > returns manteca template extra fields when multiple same-class documents exist and latest is valid
Stack Traces | 0.000836s run time
No failure message available
test/utils/persona.test.ts > is missing or null util > returns true if union is defined but all sub issues are undefined or null
Stack Traces | 0.00085s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > basic > throws when account exists but is invalid
Stack Traces | 0.000875s run time
No failure message available
test/hooks/panda.test.ts > card notification > returns ok with null userId
Stack Traces | 0.000956s run time
No failure message available
test/utils/panda.test.ts > panda request > extracts card entity from url on not found
Stack Traces | 0.00107s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getProvider > returns NOT_AVAILABLE for unsupported chain id
Stack Traces | 0.00109s run time
No failure message available
test/utils/persona.test.ts > get document for manteca > falls back to earlier document when latest same-class document is missing photos
Stack Traces | 0.00111s run time
No failure message available
test/utils/revertFingerprint.test.ts > revertFingerprint > returns error name when available
Stack Traces | 0.00112s run time
No failure message available
test/api/auth.test.ts > registration > consumes challenge after bad registration to prevent replay
Stack Traces | 0.00112s run time
No failure message available
test/utils/persona.test.ts > getAllowedMantecaIds > development mode > returns allowed ids for supported countries (AR)
Stack Traces | 0.00117s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > returns ok for OPERATION_LIMIT_UPDATED notice
Stack Traces | 0.00119s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > convertBalanceToUsdc > converts balance to usdc
Stack Traces | 0.0012s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > mantecaOnboarding > throws when front document URL not found
Stack Traces | 0.00122s run time
No failure message available
test/api/auth.test.ts > registration > consumes challenge after mismatched registration credential id to prevent replay
Stack Traces | 0.00123s run time
No failure message available
test/api/auth.test.ts > registration > consumes challenge after single-device registration to prevent replay
Stack Traces | 0.00126s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > returns ok for PAYMENT_REFUND
Stack Traces | 0.00129s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > withdrawBalance > throws for unsupported chain id
Stack Traces | 0.00132s run time
No failure message available
test/api/auth.test.ts > registration > returns 400 if registration challenge is missing
Stack Traces | 0.00133s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getProvider > handles onboarding with only some tasks defined without throwing
Stack Traces | 0.00139s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getUser > returns user when found
Stack Traces | 0.0015s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getProvider > returns ACTIVE with no limits when limits fetch fails
Stack Traces | 0.00153s run time
No failure message available
test/hooks/panda.test.ts > card notification > returns ok without decisionReason
Stack Traces | 0.00159s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > mantecaOnboarding > throws for unsupported chain id
Stack Traces | 0.00159s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > when a user onboarding is updated > returns ok for onboarding status
Stack Traces | 0.00173s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > mantecaOnboarding > throws when no identity document found
Stack Traces | 0.00173s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > returns ok for CLOSE_TO_OPERATION_LIMIT notice
Stack Traces | 0.00176s run time
No failure message available
test/utils/validatorHook.test.ts > validation error hook > when the validation fails > should return custom error code and message when provided
Stack Traces | 0.00177s run time
No failure message available
test/api/card.test.ts > authenticated > returns 403 when panda user is not approved on get with plain text
Stack Traces | 0.00177s run time
No failure message available
test/hooks/persona.test.ts > manteca template > handles manteca template and adds document
Stack Traces | 0.00183s run time
No failure message available
test/hooks/panda.test.ts > card notification > returns ok with unknown userId
Stack Traces | 0.00183s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > when a withdrawal status is updated > returns ok for pending withdrawal
Stack Traces | 0.00186s run time
No failure message available
test/api/card.test.ts > authenticated > returns 403 when panda user is not approved on get
Stack Traces | 0.00187s run time
No failure message available
test/utils/ServiceError.test.ts > ServiceError > explicit type and detail > uses provided type and detail
Stack Traces | 0.00193s run time
No failure message available
test/api/card.test.ts > authenticated > returns panda card with signature product id
Stack Traces | 0.00196s run time
No failure message available
test/api/card.test.ts > authenticated > returns 404 card not found when card is deleted
Stack Traces | 0.00197s run time
No failure message available
test/utils/verifySignature.test.ts > verify signature > should return true when the signature is valid
Stack Traces | 0.00199s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > when a deposit is detected > returns ok if account address is invalid
Stack Traces | 0.00213s run time
No failure message available
test/api/auth.test.ts > registration > consumes challenge after failed siwe registration to prevent replay
Stack Traces | 0.00213s run time
No failure message available
test/api/card.test.ts > authenticated > captures forbidden no-user on createCard when credential has card history
Stack Traces | 0.00216s run time
No failure message available
test/api/card.test.ts > authenticated > returns 403 when panda user is not found on get with empty body
Stack Traces | 0.00218s run time
No failure message available
test/hooks/panda.test.ts > card notification > returns ok with known user
Stack Traces | 0.00218s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > posting kyc > returns failed kyc when inquiry failed
Stack Traces | 0.00219s run time
No failure message available
test/utils/validatorHook.test.ts > validation error hook > when the validation fails > should capture exception and return 400 when captureException is provided
Stack Traces | 0.00219s run time
No failure message available
test/utils/revertFingerprint.test.ts > revertFingerprint > returns unknown for non-BaseError
Stack Traces | 0.00222s run time
No failure message available
test/utils/validatorHook.test.ts > validation error hook > when the validation fails > should return issues in the response
Stack Traces | 0.00223s run time
No failure message available
test/utils/pax.test.ts > pax integration > add capita > should throw an error on API failure
Stack Traces | 0.00224s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > returns ok for SYSTEM_NOTICE
Stack Traces | 0.00226s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > posting kyc > returns failed kyc when inquiry is declined
Stack Traces | 0.0023s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getProvider > returns NOT_STARTED when user has pending required tasks
Stack Traces | 0.00233s run time
No failure message available
test/api/card.test.ts > authenticated > returns 403 when panda user is not found
Stack Traces | 0.00233s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > posting kyc > returns session token when resuming expired inquiry
Stack Traces | 0.00234s run time
No failure message available
test/api/auth.test.ts > registration > consumes challenge before verifier exceptions
Stack Traces | 0.00241s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > when a user onboarding is updated > tracks RampAccount when user becomes active
Stack Traces | 0.0025s run time
No failure message available
test/api/card.test.ts > authenticated > throws when createCard fails with a different 403 error
Stack Traces | 0.00265s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getUser > throws on other errors
Stack Traces | 0.00269s run time
No failure message available
test/utils/keeper.test.ts > level option > suppresses capture with false
Stack Traces | 0.00272s run time
No failure message available
test/api/card.test.ts > authenticated > throws when getUser fails with non-404 error
Stack Traces | 0.00273s run time
No failure message available
test/api/auth.test.ts > registration > handles exceptions in post-verification registration path
Stack Traces | 0.00277s run time
No failure message available
test/api/card.test.ts > authenticated > returns 403 when createCard fails with plain-text not approved
Stack Traces | 0.00278s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > posting kyc > returns failed kyc when inquiry is completed
Stack Traces | 0.0028s run time
No failure message available
test/utils/keeper.test.ts > level option > suppresses capture when level function returns false
Stack Traces | 0.00284s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > throws when scope is not supported
Stack Traces | 0.00288s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > posting kyc > returns failed kyc when inquiry needs review
Stack Traces | 0.00288s run time
No failure message available
test/api/kyc.test.ts > authenticated > manteca scope > posting kyc > returns session token when resuming pending manteca inquiry
Stack Traces | 0.00289s run time
No failure message available
test/api/auth.test.ts > authentication > returns 400 for missing credential with non-siwe assertion
Stack Traces | 0.00297s run time
No failure message available
test/api/ramp.test.ts > ramp api > quote > manteca provider > returns quote and deposit info for manteca
Stack Traces | 0.00301s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > when a withdrawal status is updated > handles cancelled withdrawal and retries
Stack Traces | 0.00302s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getQuote > returns undefined on error
Stack Traces | 0.00309s run time
No failure message available
test/api/card.test.ts > authenticated > returns 403 without capture when frozen card user is not approved on get
Stack Traces | 0.00323s run time
No failure message available
test/api/card.test.ts > authenticated > returns panda card as default platinum product
Stack Traces | 0.00359s run time
No failure message available
test/utils/persona.test.ts > is missing or null util > returns true if field is null or undefined
Stack Traces | 0.0036s run time
No failure message available
test/api/ramp.test.ts > ramp api > quote > manteca provider > returns 400 if manteca user not started
Stack Traces | 0.0036s run time
No failure message available
test/api/kyc.test.ts > authenticated > manteca scope > posting kyc > returns failed when manteca inquiry failed
Stack Traces | 0.00382s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > when a withdrawal status is updated > returns ok for executed withdrawal
Stack Traces | 0.00385s run time
No failure message available
test/api/auth.test.ts > authentication > returns 400 if the siwe message is invalid
Stack Traces | 0.00389s run time
No failure message available
test/api/card.test.ts > authenticated > returns 403 when createCard fails with panda user not found
Stack Traces | 0.00393s run time
No failure message available
test/api/card.test.ts > authenticated > returns 403 when createCard fails with panda user not found and empty body
Stack Traces | 0.00393s run time
No failure message available
test/api/auth.test.ts > authentication > consumes challenge after failed authentication to prevent replay
Stack Traces | 0.00396s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > returns ok for USER_STATUS_UPDATE deprecated event
Stack Traces | 0.00397s run time
No failure message available
test/api/ramp.test.ts > ramp api > onboarding > manteca > resumes existing inquiry for invalid legal id when inquiry is resumable
Stack Traces | 0.00407s run time
No failure message available
test/api/pax.test.ts > /pax GET > returns 500 if credential not found
Stack Traces | 0.0041s run time
No failure message available
test/api/ramp.test.ts > ramp api > quote > bridge provider > returns 400 for unavailable crypto payment rail
Stack Traces | 0.00413s run time
No failure message available
test/api/kyc.test.ts > authenticated > manteca scope > posting kyc > returns session token when creating manteca with id class inquiry
Stack Traces | 0.00413s run time
No failure message available
test/utils/intercom.test.ts > intercom > accepts date object for expires
Stack Traces | 0.00418s run time
No failure message available
test/api/kyc.test.ts > authenticated > manteca scope > posting kyc > returns already approved and sends sentry error when manteca inquiry is approved but account not updated
Stack Traces | 0.00423s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > posting kyc > returns session token when resuming created inquiry
Stack Traces | 0.00444s run time
No failure message available
test/api/ramp.test.ts > ramp api > onboarding > manteca > creates new inquiry for invalid legal id when existing inquiry is not resumable
Stack Traces | 0.00458s run time
No failure message available
test/api/kyc.test.ts > authenticated > isLegacy flow > skips legacy check when factory is current exaAccountFactory
Stack Traces | 0.00462s run time
No failure message available
test/utils/persona.test.ts > evaluateAccount > manteca > returns manteca template when id document is missing photos
Stack Traces | 0.00483s run time
No failure message available
test/api/card.test.ts > authenticated > throws when createCard fails with empty-body 403
Stack Traces | 0.00489s run time
No failure message available
test/api/ramp.test.ts > ramp api > onboarding > manteca > returns 400 for no document error
Stack Traces | 0.00499s run time
No failure message available
test/api/ramp.test.ts > ramp api > onboarding > manteca > onboards manteca successfully
Stack Traces | 0.00514s run time
No failure message available
test/api/auth.test.ts > authentication > consumes challenge after failed siwe authentication to prevent replay
Stack Traces | 0.00514s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > getting kyc > returns not started when inquiry is pending
Stack Traces | 0.00517s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > when an order status is updated > returns ok for pending order status
Stack Traces | 0.00525s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > posting kyc > returns already approved when account has all fields
Stack Traces | 0.00536s run time
No failure message available
test/api/ramp.test.ts > ramp api > quote > bridge provider > returns 400 if bridge customer not found
Stack Traces | 0.00546s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getDepositDetails > returns ARS deposit details for argentina
Stack Traces | 0.00552s run time
No failure message available
test/api/ramp.test.ts > ramp api > get > returns providers info
Stack Traces | 0.00557s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > when an order status is updated > handles completed order and withdraws balance
Stack Traces | 0.00561s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > when a deposit is detected > returns ok if credential does not exist
Stack Traces | 0.00563s run time
No failure message available
test/api/card.test.ts > authenticated > returns 403 no panda when no panda customer
Stack Traces | 0.00566s run time
No failure message available
test/api/ramp.test.ts > ramp api > get > returns NOT_AVAILABLE when bridge provider fails
Stack Traces | 0.00567s run time
No failure message available
test/hooks/panda.test.ts > card operations > authorization > with collateral > fails with bad panda
Stack Traces | 0.0058s run time
No failure message available
test/api/kyc.test.ts > authenticated > manteca scope > posting kyc > returns session token when creating manteca extra fields inquiry
Stack Traces | 0.00582s run time
No failure message available
test/api/ramp.test.ts > ramp api > onboarding > manteca > returns 400 with new inquiry for invalid legal id when no existing inquiry
Stack Traces | 0.00583s run time
No failure message available
test/api/card.test.ts > authenticated > returns 403 when panda user exists but is not approved
Stack Traces | 0.00583s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > when a deposit is detected > does not convert if asset is USDC
Stack Traces | 0.00589s run time
No failure message available
test/utils/validatorHook.test.ts > validation error hook > should handle successful validation with debug function
Stack Traces | 0.00591s run time
No failure message available
test/utils/keeper.test.ts > level option > captures with static warning level
Stack Traces | 0.00598s run time
No failure message available
test/utils/pax.test.ts > pax integration > deriveAssociateId > should be deterministic
Stack Traces | 0.00625s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > getting kyc > returns bad kyc when inquiry failed
Stack Traces | 0.00627s run time
No failure message available
test/utils/pax.test.ts > pax integration > add capita > should call the correct endpoint with correct headers and body
Stack Traces | 0.00627s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > getting kyc > returns bad kyc when inquiry is completed
Stack Traces | 0.0063s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > getting kyc > returns not started when inquiry is expired
Stack Traces | 0.00651s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > getting kyc > returns ok code when account has all fields
Stack Traces | 0.00706s run time
No failure message available
test/api/card.test.ts > authenticated > throws when panda user is forbidden on get with empty body
Stack Traces | 0.00713s run time
No failure message available
test/api/ramp.test.ts > ramp api > quote > manteca provider > returns 400 for unsupported currency
Stack Traces | 0.00731s run time
No failure message available
test/utils/validatorHook.test.ts > validation error hook > when the validation fails > should not debug payload when filter is provided
Stack Traces | 0.00735s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > posting kyc > returns already approved and sends sentry error when template is required but inquiry is approved
Stack Traces | 0.00759s run time
No failure message available
test/api/ramp.test.ts > ramp api > quote > bridge provider > returns quote and deposit info for bridge fiat
Stack Traces | 0.00763s run time
No failure message available
test/utils/keeper.test.ts > level option > calls level function with reason and error
Stack Traces | 0.00766s run time
No failure message available
test/api/auth.test.ts > authentication > consumes challenge after unverified authentication response to prevent replay
Stack Traces | 0.00808s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > getting kyc > returns bad kyc when inquiry needs review
Stack Traces | 0.00811s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > getting kyc > returns not started when inquiry is not found
Stack Traces | 0.00847s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > when an order status is updated > handles cancelled order and retries conversion
Stack Traces | 0.00866s run time
No failure message available
test/utils/panda.test.ts > panda request > extracts entity from url on not found
Stack Traces | 0.00898s run time
No failure message available
test/utils/pax.test.ts > pax integration > deriveAssociateId > should be alphanumeric (base36)
Stack Traces | 0.00903s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > posting kyc > returns session token when creating inquiry
Stack Traces | 0.00945s run time
No failure message available
test/utils/keeper.test.ts > level option > defaults to error
Stack Traces | 0.00968s run time
No failure message available
test/hooks/panda.test.ts > card operations > refund and reversal > with collateral > fails with spending transaction not found
Stack Traces | 0.00991s run time
No failure message available
test/api/kyc.test.ts > authenticated > manteca scope > posting kyc > returns already approved when account has all manteca fields
Stack Traces | 0.0104s run time
No failure message available
test/hooks/panda.test.ts > card operations > authorization > with collateral > authorizes zero
Stack Traces | 0.011s run time
No failure message available
test/api/kyc.test.ts > authenticated > isLegacy flow > returns not legacy when old plugin with no cryptomate inquiry
Stack Traces | 0.0111s run time
No failure message available
test/api/kyc.test.ts > authenticated > isLegacy flow > returns not legacy when old plugin with non-approved cryptomate inquiry
Stack Traces | 0.0113s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > posting kyc > is the default scope
Stack Traces | 0.0116s run time
No failure message available
test/api/kyc.test.ts > authenticated > isLegacy flow > returns legacy kyc when old plugin with approved cryptomate and no panda inquiry
Stack Traces | 0.0118s run time
No failure message available
test/api/kyc.test.ts > authenticated > isLegacy flow > returns not legacy when old plugin with approved cryptomate but panda inquiry exists
Stack Traces | 0.0119s run time
No failure message available
test/hooks/panda.test.ts > validation > fails with bad key
Stack Traces | 0.0119s run time
No failure message available
test/api/kyc.test.ts > authenticated > isLegacy flow > returns not legacy when latest plugin is installed
Stack Traces | 0.0124s run time
No failure message available
test/api/card.test.ts > authenticated > does not add user to pax for new signature card (no upgrade)
Stack Traces | 0.0125s run time
No failure message available
test/hooks/panda.test.ts > card operations > capture > with collateral > captures collection errors when transaction lookup fails
Stack Traces | 0.0125s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > when a deposit is detected > converts to USDC
Stack Traces | 0.0131s run time
No failure message available
test/hooks/persona.test.ts > with reference > updates persona account documents when creating a panda user
Stack Traces | 0.0132s run time
No failure message available
test/hooks/panda.test.ts > card operations > capture > with collateral > reports settlement collection failures
Stack Traces | 0.0133s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > returns 401 with invalid signature on valid payload
Stack Traces | 0.0136s run time
No failure message available
test/api/ramp.test.ts > ramp api > get > returns NOT_AVAILABLE when manteca provider fails
Stack Traces | 0.0141s run time
No failure message available
test/api/kyc.test.ts > authenticated > manteca scope > getting kyc > returns bad kyc when manteca inquiry failed
Stack Traces | 0.0142s run time
No failure message available
test/api/card.test.ts > authenticated > returns 404 card not found
Stack Traces | 0.0145s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > returns 200 with bad payload
Stack Traces | 0.0145s run time
No failure message available
test/api/card.test.ts > authenticated > handles pax api error during signature card creation
Stack Traces | 0.0146s run time
No failure message available
test/hooks/activity.test.ts > address activity > fingerprints shouldRetry by error name
Stack Traces | 0.0147s run time
No failure message available
test/api/card.test.ts > authenticated > migration > creates a panda card having a cm card with invalid uuid
Stack Traces | 0.0147s run time
No failure message available
test/hooks/activity.test.ts > address activity > doesn't send a notification for market shares
Stack Traces | 0.0159s run time
No failure message available
test/api/auth.test.ts > authentication > returns 400 if authentication challenge is missing
Stack Traces | 0.0159s run time
No failure message available
test/api/auth.test.ts > authentication > handles exceptions in no-credential siwe authentication path
Stack Traces | 0.0164s run time
No failure message available
test/hooks/persona.test.ts > with reference > handles invalid payload > returns 200 if no inquiry session
Stack Traces | 0.0167s run time
No failure message available
test/api/card.test.ts > authenticated > creates a panda credit card with signature product id
Stack Traces | 0.0167s run time
No failure message available
test/utils/validatorHook.test.ts > validation error hook > when the validation fails > should debug payload and return 400 as default error code
Stack Traces | 0.0168s run time
No failure message available
test/utils/pax.test.ts > pax integration > deriveAssociateId > should return different IDs for different accounts
Stack Traces | 0.017s run time
No failure message available
test/api/card.test.ts > authenticated > adds user to pax when signature card is issued (upgrade from platinum)
Stack Traces | 0.0173s run time
No failure message available
test/api/kyc.test.ts > authenticated > manteca scope > getting kyc > returns not started when manteca with id class inquiry is not found
Stack Traces | 0.0176s run time
No failure message available
test/api/kyc.test.ts > authenticated > manteca scope > getting kyc > returns not supported when country is not allowed for manteca
Stack Traces | 0.0178s run time
No failure message available
test/api/ramp.test.ts > ramp api > get > returns 400 for no credential
Stack Traces | 0.0184s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > posting kyc > returns session token when resuming pending inquiry
Stack Traces | 0.0185s run time
No failure message available
test/hooks/panda.test.ts > card operations > authorization > with collateral > alarms high risk refund
Stack Traces | 0.0185s run time
No failure message available
test/api/card.test.ts > authenticated > cancels a card
Stack Traces | 0.0185s run time
No failure message available
test/api/kyc.test.ts > authenticated > isLegacy flow > returns not legacy when no plugins installed
Stack Traces | 0.0188s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > getDepositDetails > throws for unsupported currency-exchange combination
Stack Traces | 0.0189s run time
No failure message available
test/hooks/panda.test.ts > card operations > capture > with collateral > does not suspend users when settlement lookup fails
Stack Traces | 0.0194s run time
No failure message available
test/hooks/block.test.ts > validation > accepts valid request
Stack Traces | 0.0196s run time
No failure message available
test/api/activity.test.ts > authenticated > card > returns the card transaction
Stack Traces | 0.0198s run time
No failure message available
test/api/kyc.test.ts > authenticated > manteca scope > getting kyc > returns not started when manteca extra fields inquiry is not found
Stack Traces | 0.0199s run time
No failure message available
test/hooks/panda.test.ts > card operations > authorization > with collateral > alarms high risk verification
Stack Traces | 0.0199s run time
No failure message available
test/hooks/panda.test.ts > card operations > authorization > with collateral > authorizes negative amount
Stack Traces | 0.02s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > getting kyc > returns ok kyc approved with country code when panda id is present
Stack Traces | 0.0201s run time
No failure message available
test/api/kyc.test.ts > authenticated > manteca scope > getting kyc > returns ok when account has all manteca fields and country code
Stack Traces | 0.0207s run time
No failure message available
test/api/card.test.ts > authenticated > handles missing persona account during signature card creation
Stack Traces | 0.0223s run time
No failure message available
test/api/card.test.ts > authenticated > migration > creates a panda card having a cm card with upgraded plugin
Stack Traces | 0.0227s run time
No failure message available
test/hooks/persona.test.ts > with reference > returns 200 if no credential
Stack Traces | 0.0231s run time
No failure message available
test/utils/keeper.test.ts > user identity > skips sentry user with invalid account attribute
Stack Traces | 0.0232s run time
No failure message available
test/api/kyc.test.ts > authenticated > manteca scope > getting kyc > returns ok and sends sentry error when manteca inquiry is approved but account not updated
Stack Traces | 0.0242s run time
No failure message available
test/api/auth.test.ts > authentication > consumes challenge before verifier exceptions
Stack Traces | 0.0261s run time
No failure message available
test/hooks/activity.test.ts > address activity > fingerprints shouldRetry by reason
Stack Traces | 0.0267s run time
No failure message available
test/hooks/activity.test.ts > address activity > fingerprints shouldRetry as unknown
Stack Traces | 0.0268s run time
No failure message available
test/hooks/activity.test.ts > address activity > fingerprints shouldRetry as unknown revert
Stack Traces | 0.0271s run time
No failure message available
test/api/kyc.test.ts > authenticated > manteca scope > getting kyc > returns not started when manteca inquiry is pending
Stack Traces | 0.0284s run time
No failure message available
test/api/activity.test.ts > authenticated > card > reports bad transaction
Stack Traces | 0.0287s run time
No failure message available
test/api/ramp.test.ts > ramp api > quote > bridge provider > returns 400 if bridge user not started
Stack Traces | 0.0292s run time
No failure message available
test/hooks/activity.test.ts > address activity > fingerprints shouldRetry by signature
Stack Traces | 0.0294s run time
No failure message available
test/api/card.test.ts > authenticated > creates a panda debit card with signature product id
Stack Traces | 0.0299s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > getting kyc > returns ok and sends sentry error if template is required but inquiry is approved
Stack Traces | 0.0301s run time
No failure message available
test/api/auth.test.ts > authentication > returns intercom token on successful login
Stack Traces | 0.0304s run time
No failure message available
test/hooks/panda.test.ts > card operations > authorization > with collateral > authorizes installments
Stack Traces | 0.0319s run time
No failure message available
test/hooks/persona.test.ts > with reference > handles invalid payload > returns 200 if no value for monthly-purchases-range or expected-monthly-volume
Stack Traces | 0.0327s run time
No failure message available
test/api/auth.test.ts > authentication > consumes challenge after mismatched authentication credential id to prevent replay
Stack Traces | 0.035s run time
No failure message available
test/hooks/panda.test.ts > card operations > capture > with collateral > force capture debit
Stack Traces | 0.0352s run time
No failure message available
test/hooks/panda.test.ts > card operations > authorization > with collateral > with drain proposal > declines collection
Stack Traces | 0.0354s run time
No failure message available
test/hooks/panda.test.ts > card operations > clearing > with collateral > fails with transaction timeout
Stack Traces | 0.0357s run time
No failure message available
test/hooks/persona.test.ts > persona hook > creates panda and pax user on valid inquiry
Stack Traces | 0.0378s run time
No failure message available
test/utils/keeper.test.ts > user identity > sets sentry user when account attribute is valid address
Stack Traces | 0.0378s run time
No failure message available
test/hooks/persona.test.ts > with reference > should return 200 if adding the document to the account fails
Stack Traces | 0.0384s run time
No failure message available
test/hooks/panda.test.ts > card operations > authorization > with collateral > authorizes debit
Stack Traces | 0.0387s run time
No failure message available
test/hooks/manteca.test.ts > manteca hook > when a deposit is detected > handles invalid order size error gracefully
Stack Traces | 0.0387s run time
No failure message available
test/hooks/persona.test.ts > with reference > returns 200 if already created
Stack Traces | 0.0396s run time
No failure message available
test/hooks/panda.test.ts > card operations > authorization > with collateral > authorizes debit when risk assessment times out
Stack Traces | 0.0412s run time
No failure message available
test/hooks/persona.test.ts > with reference > handles invalid payload > returns 200 if no value for annual-salary or annual-salary-ranges-us-150000
Stack Traces | 0.0436s run time
No failure message available
test/hooks/panda.test.ts > card operations > clearing > with collateral > fails with unexpected error
Stack Traces | 0.0467s run time
No failure message available
test/api/activity.test.ts > validation > fails with validation error
Stack Traces | 0.0472s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > getting kyc > returns not started when inquiry is created
Stack Traces | 0.0473s run time
No failure message available
test/api/activity.test.ts > validation > fails with no auth
Stack Traces | 0.0478s run time
No failure message available
test/hooks/panda.test.ts > card operations > clearing > with collateral > clears installments
Stack Traces | 0.049s run time
No failure message available
test/hooks/panda.test.ts > card operations > capture > with collateral > settles debit
Stack Traces | 0.0491s run time
No failure message available
test/hooks/panda.test.ts > card operations > clearing > with collateral > with drain proposal > clears debit
Stack Traces | 0.0498s run time
No failure message available
test/hooks/panda.test.ts > card operations > clearing > with collateral > fails with transaction revert
Stack Traces | 0.0506s run time
No failure message available
test/utils/statement.test.ts > statement rendering > renders with both purchases and repayments
Stack Traces | 0.0514s run time
No failure message available
test/hooks/panda.test.ts > card operations > clearing > with collateral > clears credit
Stack Traces | 0.0526s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > captures withdraw errors without contract revert details
Stack Traces | 0.0529s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > captures keeper errors even when message matches terminal reason
Stack Traces | 0.0531s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > sends withdraw notification when keeper returns receipt
Stack Traces | 0.0532s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > fingerprints withdraw outer catch as unknown contract revert
Stack Traces | 0.0533s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > captures PreExecHookReverted without NoProposal as failed precondition
Stack Traces | 0.0534s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > captures withdraw non-error throwables
Stack Traces | 0.0534s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > fingerprints withdraw wrapped errors with inner selector
Stack Traces | 0.0535s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > removes withdraw from queue when keeper returns reverted receipt
Stack Traces | 0.0535s run time
No failure message available
test/hooks/panda.test.ts > card operations > authorization > with collateral > authorizes credit
Stack Traces | 0.0537s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > fingerprints withdraw outer catch as unknown
Stack Traces | 0.0538s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > fingerprints withdraw outer catch with contract revert
Stack Traces | 0.0543s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > removes withdraw from queue on terminal revert thrown by keeper
Stack Traces | 0.0544s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > removes withdraw from queue on InsufficientAccountLiquidity
Stack Traces | 0.0545s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > fingerprints withdraw outer catch by signature
Stack Traces | 0.0548s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > fingerprints withdraw revert by unknown contract data
Stack Traces | 0.0549s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > fingerprints withdraw revert by signature
Stack Traces | 0.0552s run time
No failure message available
test/api/kyc.test.ts > authenticated > manteca scope > getting kyc > returns ok when account has all manteca fields
Stack Traces | 0.0552s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > fingerprints withdraw outer catch by reason
Stack Traces | 0.0555s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > fingerprints withdraw revert as unknown
Stack Traces | 0.0558s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > fingerprints withdraw revert by reason
Stack Traces | 0.0561s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > removes withdraw from queue on RuntimeValidationFunctionMissing
Stack Traces | 0.0579s run time
No failure message available
test/hooks/panda.test.ts > card operations > authorization > with collateral > fails when tracing
Stack Traces | 0.0586s run time
No failure message available
test/hooks/panda.test.ts > card operations > capture > with collateral > force capture fraud
Stack Traces | 0.059s run time
No failure message available
test/hooks/panda.test.ts > card operations > authorization > with collateral > fails with replay
Stack Traces | 0.0599s run time
No failure message available
test/hooks/panda.test.ts > card operations > clearing > with collateral > returns ok on replay
Stack Traces | 0.0605s run time
No failure message available
test/hooks/panda.test.ts > card operations > refund and reversal > with collateral > fails with unexpected reversal error
Stack Traces | 0.0607s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > removes withdraw from queue on NoProposal
Stack Traces | 0.0607s run time
No failure message available
test/hooks/block.test.ts > legacy withdraw > removes withdraw from queue on NoProposal thrown by keeper
Stack Traces | 0.0622s run time
No failure message available
test/utils/pax.test.ts > pax integration > deriveAssociateId > should return a 10-character string
Stack Traces | 0.0623s run time
No failure message available
test/api/auth.test.ts > registration > creates a credential using webauthn
Stack Traces | 0.0628s run time
No failure message available
test/hooks/panda.test.ts > card operations > refund and reversal > with collateral > refunds without traceable spending
Stack Traces | 0.063s run time
No failure message available
test/api/auth.test.ts > registration > creates a credential using siwe
Stack Traces | 0.0632s run time
No failure message available
test/hooks/activity.test.ts > address activity > pokes eth without value
Stack Traces | 0.0633s run time
No failure message available
test/hooks/activity.test.ts > address activity > fingerprints poke revert by signature
Stack Traces | 0.0648s run time
No failure message available
test/hooks/activity.test.ts > address activity > fingerprints poke revert as unknown
Stack Traces | 0.0652s run time
No failure message available
test/hooks/activity.test.ts > address activity > pokes eth with value when rawValue is missing
Stack Traces | 0.0663s run time
No failure message available
test/api/auth.test.ts > authentication > creates a credential using siwe
Stack Traces | 0.0687s run time
No failure message available
test/hooks/activity.test.ts > address activity > fingerprints poke revert by error name
Stack Traces | 0.0693s run time
No failure message available
test/hooks/block.test.ts > proposal > with wrapped error > fingerprints non-contract errors
Stack Traces | 0.0755s run time
No failure message available
test/hooks/panda.test.ts > card operations > authorization > with collateral > alarms high risk authorization
Stack Traces | 0.0772s run time
No failure message available
test/hooks/block.test.ts > proposal > with reverting proposals > fingerprints outer catch by signature
Stack Traces | 0.0792s run time
No failure message available
test/hooks/activity.test.ts > address activity > fingerprints poke revert by reason
Stack Traces | 0.08s run time
No failure message available
test/api/activity.test.ts > authenticated > onchain > returns repays
Stack Traces | 0.0823s run time
No failure message available
test/api/activity.test.ts > authenticated > onchain > returns deposits
Stack Traces | 0.0823s run time
No failure message available
test/hooks/panda.test.ts > card operations > capture > with collateral > partial capture debit
Stack Traces | 0.0827s run time
No failure message available
test/hooks/panda.test.ts > card operations > clearing > with collateral > clears debit
Stack Traces | 0.0828s run time
No failure message available
test/hooks/block.test.ts > proposal > with reverting proposals > handles NoProposal as success in outer catch
Stack Traces | 0.0837s run time
No failure message available
test/api/kyc.test.ts > authenticated > basic scope > getting kyc > is the default scope
Stack Traces | 0.0842s run time
No failure message available
test/hooks/block.test.ts > proposal > with reverting proposals > handles NonceTooLow as success in outer catch
Stack Traces | 0.0844s run time
No failure message available
test/hooks/panda.test.ts > card operations > authorization > with collateral > fails with InsufficientAccountLiquidity
Stack Traces | 0.0876s run time
No failure message available
test/hooks/activity.test.ts > address activity > fails with transaction timeout
Stack Traces | 0.0884s run time
No failure message available
test/utils/intercom.test.ts > intercom > returns a valid jwt token
Stack Traces | 0.0939s run time
No failure message available
test/api/activity.test.ts > authenticated > returns everything
Stack Traces | 0.095s run time
No failure message available
test/hooks/block.test.ts > proposal > with reverting proposals > fingerprints outer catch as unknown contract revert
Stack Traces | 0.0969s run time
No failure message available
test/hooks/block.test.ts > proposal > with reverting proposals > fingerprints outer catch as unknown
Stack Traces | 0.0982s run time
No failure message available
test/hooks/block.test.ts > proposal > with reverting proposals > handles recovery NonceTooLow as success
Stack Traces | 0.0987s run time
No failure message available
test/api/activity.test.ts > authenticated > onchain > returns withdraws
Stack Traces | 0.0991s run time
No failure message available
test/hooks/activity.test.ts > address activity > fails with unexpected error
Stack Traces | 0.102s run time
No failure message available
test/hooks/activity.test.ts > address activity > pokes token without value
Stack Traces | 0.106s run time
No failure message available
test/api/activity.test.ts > validation > fails with bad credential
Stack Traces | 0.107s run time
No failure message available
test/hooks/panda.test.ts > card operations > capture > with collateral > over-captures frozen debit
Stack Traces | 0.107s run time
No failure message available
test/hooks/block.test.ts > proposal > with reverting proposals > requeues Timelocked proposals without nonce skipping
Stack Traces | 0.112s run time
No failure message available
test/hooks/panda.test.ts > card operations > refund and reversal > with collateral > returns ok on reversal replay
Stack Traces | 0.117s run time
No failure message available
test/hooks/panda.test.ts > card operations > clearing > with collateral > clears with transaction update
Stack Traces | 0.118s run time
No failure message available
test/api/auth.test.ts > registration > creates a credential with source using webauthn
Stack Traces | 0.119s run time
No failure message available
test/hooks/activity.test.ts > address activity > pokes eth with value when rawValue is 0x
Stack Traces | 0.122s run time
No failure message available
test/hooks/block.test.ts > proposal > with reverting proposals > fingerprints outer catch by reason
Stack Traces | 0.123s run time
No failure message available
test/hooks/panda.test.ts > card operations > refund and reversal > with collateral > handles refund
Stack Traces | 0.128s run time
No failure message available
test/hooks/block.test.ts > proposal > with wrapped error > fingerprints unknown signatures
Stack Traces | 0.134s run time
No failure message available
test/hooks/block.test.ts > proposal > with wrapped error > fingerprints zero data errors
Stack Traces | 0.136s run time
No failure message available
test/hooks/panda.test.ts > card operations > refund and reversal > with collateral > handles reversal
Stack Traces | 0.144s run time
No failure message available
test/hooks/activity.test.ts > address activity > deploy account for non market asset
Stack Traces | 0.144s run time
No failure message available
test/hooks/block.test.ts > proposal > with weth withdraw proposal > increments nonce
Stack Traces | 0.144s run time
No failure message available
test/hooks/block.test.ts > proposal > with wrapped error > fingerprints with inner selector
Stack Traces | 0.148s run time
No failure message available
test/api/auth.test.ts > authentication > creates a credential with source using siwe
Stack Traces | 0.149s run time
No failure message available
test/hooks/activity.test.ts > address activity > pokes weth and eth
Stack Traces | 0.16s run time
No failure message available
test/api/pax.test.ts > /pax GET > returns associate id
Stack Traces | 0.163s run time
No failure message available
test/hooks/block.test.ts > proposal > with reverting proposals > increments nonce
Stack Traces | 0.182s run time
No failure message available
test/hooks/activity.test.ts > address activity > pokes eth
Stack Traces | 0.199s run time
No failure message available
test/api/activity.test.ts > validation > succeeds with valid credential
Stack Traces | 0.199s run time
No failure message available
test/hooks/activity.test.ts > address activity > pokes multiple accounts
Stack Traces | 0.328s run time
No failure message available
test/hooks/block.test.ts > proposal > with idle proposals > executes proposal
Stack Traces | 0.344s run time
No failure message available
test/hooks/activity.test.ts > address activity > ignores token without value and zero rawValue
Stack Traces | 0.346s run time
No failure message available
test/hooks/block.test.ts > proposal > with valid proposals > execute withdraws
Stack Traces | 0.353s run time
No failure message available
test/hooks/block.test.ts > proposal > with idle proposals > captures NotNext warning for out-of-order proposal execution
Stack Traces | 0.36s run time
No failure message available
test/utils/keeper.test.ts > fault tolerance > recovers if transaction is missing
Stack Traces | 0.761s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > uploadIdentityFile > retries when presigned URL request fails
Stack Traces | 1s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > uploadIdentityFile > retries when fetch throws an error
Stack Traces | 1s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > uploadIdentityFile > retries file upload on failure and succeeds
Stack Traces | 1s run time
No failure message available
test/utils/keeper.test.ts > fault tolerance > times out if can't send transaction
Stack Traces | 1.14s run time
No failure message available
test/hooks/panda.test.ts > card operations > clearing > with collateral > fails with keeper timeout in debit flow
Stack Traces | 1.17s run time
No failure message available
test/utils/keeper.test.ts > fault tolerance > resets nonce when skipped
Stack Traces | 1.34s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > uploadIdentityFile > throws after max retries exceeded
Stack Traces | 2s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > mantecaOnboarding > handles non-binary sex mapping
Stack Traces | 2.01s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > mantecaOnboarding > initiates onboarding for new user
Stack Traces | 2.01s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > mantecaOnboarding > skips initiateOnboarding for existing onboarding user
Stack Traces | 2.01s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > mantecaOnboarding > handles female sex mapping
Stack Traces | 2.01s run time
No failure message available
test/utils/keeper.test.ts > fault tolerance > resets nonce with 100 transactions blocked
Stack Traces | 3.21s run time
No failure message available
test/utils/keeper.test.ts > user identity > skips sentry user without account attribute
Stack Traces | 4.05s run time
No failure message available
test/hooks/panda.test.ts > card operations > capture > with collateral > over capture debit
Stack Traces | 4.09s run time
No failure message available
test/hooks/activity.test.ts > address activity > captures no balance once after retries
Stack Traces | 10.1s run time
No failure message available
View the full list of 16 ❄️ flaky test(s)
test/api/activity.test.ts > authenticated > card > filters by maturity

Flake rate in main: 14.29% (Passed 12 times, Failed 2 times)

Stack Traces | 0.0482s run time
No failure message available
test/api/activity.test.ts > authenticated > card > returns json when pdf quality is zero

Flake rate in main: 18.18% (Passed 9 times, Failed 2 times)

Stack Traces | 0.0479s run time
No failure message available
test/api/activity.test.ts > authenticated > card > returns statement pdf

Flake rate in main: 14.29% (Passed 12 times, Failed 2 times)

Stack Traces | 0.181s run time
No failure message available
test/api/activity.test.ts > authenticated > card > returns statement pdf for combined accept header

Flake rate in main: 18.18% (Passed 9 times, Failed 2 times)

Stack Traces | 0.11s run time
No failure message available
test/api/activity.test.ts > authenticated > card > scopes maturity transaction lookup to user cards

Flake rate in main: 18.18% (Passed 9 times, Failed 2 times)

Stack Traces | 0.0401s run time
No failure message available
test/api/activity.test.ts > authenticated > onchain > keeps received events deduplicated when maturity is provided

Flake rate in main: 18.18% (Passed 9 times, Failed 2 times)

Stack Traces | 0.0949s run time
No failure message available
test/hooks/panda.test.ts > concurrency > handles concurrent authorizations

Flake rate in main: 14.29% (Passed 12 times, Failed 2 times)

Stack Traces | 0.145s run time
No failure message available
test/hooks/panda.test.ts > concurrency > releases mutex when authorization is declined

Flake rate in main: 11.11% (Passed 16 times, Failed 2 times)

Stack Traces | 0.097s run time
No failure message available
test/hooks/panda.test.ts > concurrency > with fake timers > mutex timeout

Flake rate in main: 14.29% (Passed 12 times, Failed 2 times)

Stack Traces | 0.137s run time
No failure message available
test/hooks/persona.test.ts > with reference > creates a panda account

Flake rate in main: 14.29% (Passed 12 times, Failed 2 times)

Stack Traces | 0.0578s run time
No failure message available
test/utils/manteca.test.ts > manteca utils > mantecaOnboarding > throws INVALID_LEGAL_ID when initiateOnboarding returns legalId error

Flake rate in main: 11.11% (Passed 16 times, Failed 2 times)

Stack Traces | 0.00086s run time
No failure message available
test/utils/persona.test.ts > get document for manteca > brazil priority order: dl > pp > id > prioritizes dl over pp and id when dl has both photos

Flake rate in main: 14.29% (Passed 12 times, Failed 2 times)

Stack Traces | 0.000451s run time
No failure message available
test/utils/statement.test.ts > statement rendering > renders with empty data

Flake rate in main: 14.29% (Passed 12 times, Failed 2 times)

Stack Traces | 0.0216s run time
No failure message available
test/utils/statement.test.ts > statement rendering > renders with purchases

Flake rate in main: 14.29% (Passed 12 times, Failed 2 times)

Stack Traces | 0.15s run time
No failure message available
test/utils/statement.test.ts > statement rendering > renders with repayments

Flake rate in main: 14.29% (Passed 12 times, Failed 2 times)

Stack Traces | 0.0372s run time
No failure message available
web::web

Flake rate in main: 100.00% (Passed 0 times, Failed 3 times)

Stack Traces | 33s run time
Assertion is false: "Sign in" is not visible

To view more test analytics, go to the Prevent Tests Dashboard

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (2)
server/hooks/bridge.ts (1)

125-177: ⚠️ Potential issue | 🟠 Major

Guard side effects with webhook idempotency.

track() and sendPushNotification() run on every delivery in this block. Retries/duplicates will emit repeated analytics and notifications unless you dedupe on a stable event key before side effects.

server/test/hooks/bridge.test.ts (1)

25-36: ⚠️ Potential issue | 🟠 Major

Add teardown for inserted credential fixture.

The suite inserts persistent DB state in beforeAll but never deletes it. This can leak state across reruns and make the suite flaky.

Suggested cleanup
-import { afterEach, beforeAll, describe, expect, inject, it, vi } from "vitest";
+import { eq } from "drizzle-orm";
+import { afterAll, afterEach, beforeAll, describe, expect, inject, it, vi } from "vitest";
@@
   beforeAll(async () => {
     await database.insert(credentials).values([
       {
         id: "bridge-test",
         publicKey: new Uint8Array(hexToBytes(owner)),
         account,
         factory,
         pandaId: "bridgePandaId",
         bridgeId: "bridgeCustomerId",
       },
     ]);
   });
+
+  afterAll(async () => {
+    await database.delete(credentials).where(eq(credentials.id, "bridge-test"));
+  });

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 1f375179-b8c8-43dc-9548-2da431b5b274

📥 Commits

Reviewing files that changed from the base of the PR and between 468bb15 and d67d97d.

📒 Files selected for processing (9)
  • .changeset/thin-pumas-brush.md
  • server/hooks/bridge.ts
  • server/hooks/manteca.ts
  • server/index.ts
  • server/test/hooks/bridge.test.ts
  • server/test/hooks/manteca.test.ts
  • server/utils/ramps/bridge.ts
  • server/utils/segment.ts
  • server/vitest.config.mts

coderabbitai[bot]

This comment was marked as resolved.

coderabbitai[bot]

This comment was marked as resolved.

coderabbitai[bot]

This comment was marked as resolved.

@mainqueg mainqueg force-pushed the bridge-hook branch 2 times, most recently from 333ef5d to c8ea3f5 Compare March 5, 2026 17:23
@cruzdanilo cruzdanilo marked this pull request as ready for review March 5, 2026 19:45
Comment on lines +193 to +195
const digest = createHash("sha256").update(`${timestamp}.${body}`).digest();
const verifier = createVerify("RSA-SHA256");
verifier.update(digest);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: The Bridge webhook handler uses RSA-SHA256 for signature verification, but the Bridge API requires HMAC-SHA256. This will cause all legitimate webhooks to fail verification.
Severity: CRITICAL

Suggested Fix

Replace the RSA-SHA256 verification logic with HMAC-SHA256. Use crypto.createHmac("sha256", webhookSecret) to generate a signature from the request body and timestamp. Compare this generated signature against the one provided in the bridge-signature header. Update the environment variable from BRIDGE_WEBHOOK_PUBLIC_KEY to a shared secret provided by Bridge.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location: server/hooks/bridge.ts#L193-L195

Potential issue: The Bridge webhook signature verification is incorrectly implemented
using `RSA-SHA256` with a public key, as seen with `createVerify("RSA-SHA256")`.
According to Bridge's API documentation, webhooks must be verified using `HMAC-SHA256`
with a shared secret. This mismatch will cause the verification to fail for all incoming
webhooks from Bridge, resulting in a `401 Unauthorized` response. Consequently, critical
functionalities like customer activation, onramp transaction tracking, and deposit
notifications will be completely broken. The implementation appears to be an incorrect
adaptation from a Stripe webhook handler.

Did we get this right? 👍 / 👎 to inform future reviews.

Copy link

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 2 potential issues.

View 4 additional findings in Devin Review.

Open in Devin Review

if (!match) return c.json({ code: "unauthorized" }, 401);
const [, timestamp, base64Signature] = match;
if (!timestamp || !base64Signature) return c.json({ code: "unauthorized" }, 401);
if (Math.abs(Date.now() - Number(timestamp)) > 600_000) return c.json({ code: "unauthorized" }, 401);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚩 Timestamp validation assumes millisecond precision

The timestamp comparison at line 191 uses Math.abs(Date.now() - Number(timestamp)) > 600_000, treating the bridge timestamp as milliseconds (matching Date.now()). The test at server/test/hooks/bridge.test.ts:83 confirms this assumption by using Date.now() - 600_001 as an expired timestamp. If Bridge's webhook actually sends timestamps in Unix seconds (not milliseconds), the 10-minute window (600_000 ms) would be compared against a value ~1000x larger, causing every request to be rejected. This depends on Bridge's actual API behavior which should be verified against their documentation.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 16b4784071

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +100 to +107
const bridgeId =
payload.event_type === "customer.updated.status_transitioned"
? payload.event_object.id
: payload.event_object.customer_id;
const credential = await database.query.credentials.findFirst({
columns: { account: true, source: true },
where: eq(credentials.bridgeId, bridgeId),
});

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Skip credential lookup for ignored bridge events

The handler fetches credentials before checking subtype/state-specific no-op paths, so events you intentionally ignore (for example virtual_account.activity.created with type !== "payment_submitted" or drain transitions not in payment_submitted) still hit the database and can emit credential not found errors for unknown customer_ids. In production webhook traffic where Bridge sends many non-actionable transitions, this creates avoidable DB load and noisy Sentry errors even though the final behavior is just 200 { code: "ok" }.

Useful? React with 👍 / 👎.

devin-ai-integration[bot]

This comment was marked as resolved.

Copy link

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 new potential issue.

View 4 additional findings in Devin Review.

Open in Devin Review

| {
event: "Onramp";
properties: {
amount: number;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚩 fiatAmount → amount rename is complete and consistent

The property rename from fiatAmount to amount in the Segment Onramp event type (server/utils/segment.ts:45) is consistently applied in the only two callers: server/hooks/manteca.ts:204 and server/hooks/bridge.ts:143,164. The test assertions in server/test/hooks/manteca.test.ts:349 and server/test/hooks/bridge.test.ts:149,290 also use the new amount name. This is a breaking change for any downstream Segment consumers (dashboards, analytics pipelines) that reference the old fiatAmount property name.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

@cruzdanilo cruzdanilo merged commit 7672e26 into main Mar 11, 2026
16 checks passed
@cruzdanilo cruzdanilo deleted the bridge-hook branch March 11, 2026 19:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

server: on ramp bridge

2 participants